package map;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 *
 */
public class MapDemo2 {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        map.put("语文", 99);
        map.put("数学", 98);
        map.put("英语", 97);
        map.put("物理", 96);
        map.put("化学", 99);
        System.out.println(map);

        /*
            遍历所有的key
            Set<K>接收 = 对象.KeySet()
            将当前map中所有的key以一个Set集合形式返回
         */
        Set<String> keySet = map.keySet();
        for(String key : keySet){
            System.out.println(key);
        }


        /*
            Set<Map.Entry<String,Integer>> 接收 =  对象.entrySet()
            将当前Map中每一组数值对以一个Entry实例表示，然后以Set集合的形式返回所有
            的数值对
            Entry有两个常用方法：
            K类型接收  对象.getKey();
            V类型接收  对象.getValue();
         */
        Set<Map.Entry<String,Integer>> entrySet = map.entrySet();//Entry实例就是Map.Entre<K,V>
        for(Map.Entry<String,Integer> e : entrySet){
            String key = e.getKey();
            Integer value = e.getValue();
            System.out.println(key+":"+value);
        }

        /*
            JDK8之后，Map也支持使用lambda表达式进行遍历
         */
        map.forEach((k,v)-> System.out.println(k+":"+v));


        /*
            Collection类型接收   对象.values();
            将当前Map中所有的Value以一个集合的形式返回
         */
        Collection<Integer> values = map.values();
        for(Integer value : values) {
            System.out.println("value="+value);
        }

    }
}
